package Xml;

import java.util.ArrayList;

import Tela.ItemPGArco;
import Tela.ItemPGNoh;
import Tela.ItemPanelGrafo;
import Tela.PanelGrafo;

public class serializacaoObjetos {
	private String Usuario;
	private String Senha;
	private String Alias;
	private String Endereco;
	public String getEndereco() {
		return Endereco;
	}

	public void setEndereco(String endereco) {
		Endereco = endereco;
	}

	private ArrayList<objetosTela> items;
	private ArrayList<objetosTela> selecionados;

	public serializacaoObjetos() {
		items = new ArrayList<objetosTela>();
	};

	public ArrayList getSelecionados() {
		return selecionados;
	}

	public void setSelecionados(ArrayList selecionados) {
		this.selecionados = selecionados;
	}

	public String getUsuario() {
		return Usuario;
	}

	public void setUsuario(String usuario) {
		Usuario = usuario;
	}

	public String getSenha() {
		return Senha;
	}

	public void setSenha(String senha) {
		Senha = senha;
	}

	public String getAlias() {
		return Alias;
	}

	public void setAlias(String alias) {
		Alias = alias;
	}

	

	public void recebeItens(PanelGrafo dono, boolean selecionados) {
		int totalItems = 0;
		if (selecionados) {
			totalItems = dono.qtosItemsSelecionados();
		} else {
			totalItems = dono.qtosItems();
		}
		ItemPanelGrafo item = null;
		objetosTela objetoTela;

		for (int i = 0; i < totalItems; i++) {

			if (selecionados) {
				item = dono.getItemSelecionado(i);
			} else {
				item = dono.getItem(i);
			}
			objetoTela = new objetosTela();
			if (item.getTextoObjeto() != null) {
				objetoTela.setTipo(item.getTextoObjeto());
				objetoTela.setY(item.getPosY());
				objetoTela.setX(item.getPosX());
				objetoTela.setY2(0);
				objetoTela.setX2(0);
				objetoTela.setSQL(item.getSql());
			} else {
				ItemPGArco arco = (ItemPGArco) item;
				objetoTela.setTipo("");
				objetoTela.setY(arco.getNohInicial().getPosY());
				objetoTela.setX(arco.getNohInicial().getPosX());
				objetoTela.setY2(arco.getNohFinal().getPosY());
				objetoTela.setX2(arco.getNohFinal().getPosX());
				objetoTela.setSQL(item.getSql());

			}

			items.add(objetoTela);
		}
	}

	private ItemPGNoh findNoh(int x, int y, PanelGrafo pg) {
		int totalItems = pg.qtosItems();
		ItemPanelGrafo item;
		for (int i = 0; i < totalItems; i++) {
			item = pg.getItem(i);
			if (item instanceof ItemPGNoh && item.contido(x, y))
				return (ItemPGNoh) item;
		}
		return null;
	}

	public void adicionaItens(PanelGrafo dono, boolean selecionados) {
		int totalItems = items.size();

		objetosTela objetoTela;

		for (int i = 0; i < totalItems; i++) {
			objetoTela = items.get(i);
			ItemPGNoh noh = new ItemPGNoh(objetoTela.getX(), objetoTela.getY(),
					objetoTela.getTipo());
			noh.SetSql(objetoTela.getSQL());
			if (noh.getTextoObjeto() != "") {
				if (selecionados) {
					dono.addSelecionado(noh);
				} else {
					dono.addItem(noh);
				}
			} else {
				ItemPGNoh nohIni = null;
				ItemPGArco arcoAtual = null;

				nohIni = findNoh(objetoTela.getX(), objetoTela.getY(), dono);

				arcoAtual = new ItemPGArco(nohIni);
				nohIni.addArco(arcoAtual);
				dono.addItem(arcoAtual);

				ItemPGNoh nohFim = findNoh(objetoTela.getX2(), objetoTela
						.getY2(), dono);
				arcoAtual.setNohFinal(nohFim);
				nohFim.addArco(arcoAtual);
				if (selecionados) {
					dono.addSelecionado(arcoAtual);
				} else {
					dono.addItem(arcoAtual);
				}

			}

		}

	}

}
